package com.mall.b2c.hessian;

import com.mall.b2c.bean.MemberBean;
import com.mall.b2c.bean.ReceiverBean;
import com.mall.common.hessian.BaseHessian;


public interface MemberHessian extends BaseHessian {
	
	/**
	 * 会员注册
	 * @param mobile 手机号码
	 * @param password 密码
	 * @param ip 注册ip
	 * @return
	 */
	String register(String mobile, String password, String ip, Long inviterId);
	
	/**
	 * 会员登录
	 * @param username 用户名
	 * @param password 密码
	 * @param ip 登录ip
	 * @return
	 */
	String login(String username, String password, String ip);
	
	/**
	 * 获取会员信息
	 * @param id 会员id
	 * @param username 用户名
	 * @return
	 */
	String getMemberInfo(Long id, String username);
	
	/**
	 * 保存会员信息
	 * @param member 会员信息
	 */
	void saveMemberInfo(MemberBean member);
	
	/**
	 * 判断邮箱是否已经存在
	 * @param email 邮箱
	 * @param id 会员id
	 * @return
	 */
	boolean isExistEamil(String email, Long id);

	/**
	 * 修改密码
	 * @param memberId 会员id
	 * @param oldPwd 老密码
	 * @param newPwd 新密码
	 */
	void modifyPwd(Long memberId, String oldPwd, String newPwd);

	/**
	 *重置密码
	 * @param memberId
	 * @param newPwd
	 * @return 错误信息，无错返回null
	 */
	String resetPwd(Long memberId, String newPwd);

	/**
	 * 发送验证邮件
	 * @param email 邮箱
	 * @param memberId 会员id
	 * @param type 验证码类型：1..邮箱换绑 2.密码找回
	 * @return
	 */
	String sendEmail(String email, Long memberId, int type);
	
	/**
	 * 验证邮件
	 * @param memberId 会员id
	 * @param code 验证码
	 * @return
	 */
	String verifyEmail(Long memberId, String code);

	/**
	 * 修改邮箱（换绑）
	 * @param code 验证码
	 */
	String modifyEmail(String code);
	
	/**
	 * 发送手机验证码
	 * @param mobile 手机号码
	 * @param IP 用户IP 非验证码短信可为空
	 * @param isCaptcha 是否验证码短信
	 * @param memberId 会员id
	 * @param type 验证码类型:1.手机换绑 2.修改密码
	 * @return 验证码
	 */
	String sendMobileCaptcha(String mobile, String ip, Boolean isCaptcha, Long memberId, int type);
	
	/**
	 * 验证手机验证码
	 * @param memberId 会员id
	 * @param code 验证码
	 * @return 错误消息
	 */
	String validateCode(Long memberId, String code);
	
	/**
	 * 修改手机（换绑）
	 * @param mobile 手机号码
	 * @param memberId 会员id
	 */
	void modifyMobile(String mobile, Long memberId);

	/**
	 * 找回密码验证
	 * @param code 验证码
	 * @return
	 */
	String recovery(String code);
	
	/**
	 * 获取收货地址列表
	 * @param memberId 会员id
	 * @return
	 */
	String getReceiverList(Long memberId);
	
	/**
	 * 获取收货地址信息
	 * @param receiverId 收货地址id
	 * @param memberId 会员id
	 * @return
	 */
	String getReceiver(Long receiverId, Long memberId);
	
	/**
	 * 添加收货地址
	 * @param receiver 收货地址信息
	 * @param memberId 会员id
	 * @return
	 */
	String addReceiver(ReceiverBean receiver, Long memberId);
	
	/**
	 * 修改收货地址
	 * @param receiver 收货地址信息
	 * @param memberId 会员id
	 */
	void updateReceiver(ReceiverBean receiver, Long memberId);
	
	/**
	 * 删除收货地址
	 * @param receiverId 收货地址id
	 * @param memberId 会员id
	 */
	void deleteReceiver(Long receiverId, Long memberId);
	
	/**
	 * 设置默认收货地址
	 * @param receiverId 收货地址id
	 * @param memberId 会员id
	 */
	void setDefaultReceiver(Long receiverId, Long memberId);
	
	/**
	 * 获取收藏商品
	 * @param memberId 会员id
	 * @param pageNumber 页码
	 * @return
	 */
	String getFavoriteGoods(Long memberId, Integer pageNumber);
	
	/**
	 * 收藏商品
	 * @param goodsIds 商品id
	 * @param memberId 会员id
	 */
	void addFavoriteGoods(Long[] goodsIds, Long memberId);
	
	/**
	 * 移出收藏商品
	 * @param goodsIds 商品id
	 * @param memberId 会员id
	 */
	void deleteFavoriteGoods(Long[] goodsIds, Long memberId);

	/**
	 * 获取最近收藏商品
	 * @param memberId
	 * @param count
	 * @return
	 */
	String findFavoriteList(Long memberId, Integer count);

	/***
	 * 好友记录
	 * @return
	 */
	String findFriends(Long memberId);
}
